﻿/// ***************************************************************
/// Description:
/// Der StressTestEchoServer empfängt Daten von Clients und sendet
/// diese Daten wieder zurück. Die Kommunikation findet über UDP
/// statt. Der Server lauscht auf allen verfügbaren Netzwerkadapter
/// auf den eingegebenen Port.
/// 
/// Author: Iwo Wahlbrink
/// Date:   09.06.2014
/// ***************************************************************
using System;

namespace StressTestEchoServer
{
	class Program
	{
		static void Main(string[] args)
		{
			try
			{
			#region Initialisierungs Abfragen für Ports
				Console.Write("Bitte geben Sie den Port an des EchoServers an: ");
				string port = Console.ReadLine();

				Console.WriteLine("Zum Beenden die ESC-Taste drücken!");
                Console.WriteLine("Zum Ausgabe leeren die ENTF-Taste drücken!");
			#endregion

			#region Server starten
				UDPEchoServer udpEcho = new UDPEchoServer(Int32.Parse(port));

				udpEcho.StartServer();
			#endregion

				//Endlosschleife bis ESC-Taste gedrückt wird
				ConsoleKeyInfo keyInfo;
				do
				{
					keyInfo = Console.ReadKey();

                    if (ConsoleKey.Delete.Equals(keyInfo.Key))
                    { 
                        Console.Clear();
                        Console.WriteLine("Zum Beenden die ESC-Taste drücken!");
                        Console.WriteLine("Zum Ausgabe leeren die ENTF-Taste drücken!");
                        udpEcho.Output();
                    }
				}
				while (!ConsoleKey.Escape.Equals(keyInfo.Key));
			
			#region Server beenden
				if (udpEcho.IsRunning)
					udpEcho.StopServer();
			#endregion

			}
			catch (Exception e)
			{
				Console.Clear();
				Console.WriteLine(e.Message);
				Console.ReadLine();
			}
		}
	}
}